package com.zp.base.entity.bo;

import com.zp.common.core.entity.BaseEntity;
import com.zp.common.core.validate.AddGroup;
import com.zp.common.core.validate.EditGroup;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 价表操作记录业务对象
 *
 * @author zhang peng
 * @date 2023-01-07
 */

@Data
@EqualsAndHashCode(callSuper = true)
public class PriceListLogBo extends BaseEntity {

    /**
     * 主键
     */
    @NotBlank(message = "主键不能为空", groups = {EditGroup.class})
    private String priceLogId;

    /**
     * 项目分类
     */
    @NotBlank(message = "项目分类不能为空", groups = {AddGroup.class, EditGroup.class})
    private String itemClass;

    /**
     * 项目代码
     */
    @NotBlank(message = "项目代码不能为空", groups = {AddGroup.class, EditGroup.class})
    private String itemCode;

    /**
     * 项目名称
     */
    @NotBlank(message = "项目名称不能为空", groups = {AddGroup.class, EditGroup.class})
    private String itemName;

    /**
     * 医保类型
     */
    @NotBlank(message = "医保类型不能为空", groups = {AddGroup.class, EditGroup.class})
    private String medicalInsuranceType;

    /**
     * 项目规格
     */
    @NotBlank(message = "项目规格不能为空", groups = {AddGroup.class, EditGroup.class})
    private String itemSpec;

    /**
     * 单位
     */
    @NotBlank(message = "单位不能为空", groups = {AddGroup.class, EditGroup.class})
    private String units;

    /**
     * 网络价格
     */
    private BigDecimal networkPrice;

    /**
     * 批发价格
     */
    private BigDecimal tradePrice;

    /**
     * 价格
     */
    @NotNull(message = "价格不能为空", groups = {AddGroup.class, EditGroup.class})
    private BigDecimal price;

    /**
     * 优惠价格
     */
    private BigDecimal preferPrice;

    /**
     * 门诊费用分类
     */
    @NotBlank(message = "门诊费用分类不能为空", groups = {AddGroup.class, EditGroup.class})
    private String classOnRcpt;

    /**
     * 住院费用分类
     */
    @NotBlank(message = "住院费用分类不能为空", groups = {AddGroup.class, EditGroup.class})
    private String classOnInp;

    /**
     * 核算项目分类
     */
    @NotBlank(message = "核算项目分类不能为空", groups = {AddGroup.class, EditGroup.class})
    private String classOnReckoning;

    /**
     * 会计科目
     */
    @NotBlank(message = "会计科目不能为空", groups = {AddGroup.class, EditGroup.class})
    private String subjCode;

    /**
     * 病案首页分类
     */
    @NotBlank(message = "病案首页分类不能为空", groups = {AddGroup.class, EditGroup.class})
    private String classOnMr;

    /**
     * 是否最新价格
     */
    @NotBlank(message = "是否最新价格不能为空", groups = {AddGroup.class, EditGroup.class})
    private String isNer;

    /**
     * 价表ID
     */
    @NotBlank(message = "价表ID不能为空", groups = {AddGroup.class, EditGroup.class})
    private String priceId;

    /**
     * 开始时间
     */
    private Date startDate;

    /**
     * 停止时间
     */
    private Date stopDate;

    /**
     * 拼音码
     */
    private String inputCode;

    /**
     * 操作类型0-新增；1-修改；2-调价；3停价；4-其他
     */
    @NotBlank(message = "操作类型0-新增；1-修改；2-调价；3停价；4-其他不能为空", groups = {AddGroup.class, EditGroup.class})
    private String operationType;

    /**
     * 机构ID
     */
    @NotBlank(message = "机构ID不能为空", groups = {AddGroup.class, EditGroup.class})
    private String orgId;

    /**
     * 备注信息
     */
    private String remark;

    /**
     * 医保对照项目代码
     */
    private String itemCodeYbCompare;

    /**
     * 是否最新价格 0是 1否
     */
    private String inNer;


}
